﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using GRC_TPE_WebApp.Controller;

namespace GRC_TPE_WebApp.View.Private.User
{
    public partial class EditUser : System.Web.UI.Page
    {
        int idUser = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            /// tentative de récupération de l'id
            if (!int.TryParse(Request.QueryString["id"], out idUser))
                /// redirection s'il y a une erreur au Parse
                Response.Redirect("ListUsers.aspx");

            /// si c'est un administrateur
            if (((string[])Session["User"])[2] == "Administrateur")
                this.editUserType.Enabled = true;
        }

        /// <summary>
        /// Méthode déclenchée une fois la page chargée
        /// </summary>
        /// <param name="e"></param>
        protected override void OnLoadComplete(EventArgs e)
        {
            base.OnLoadComplete(e);

            if (this.idUser != 0)
            {
                /// recherche des valeurs des champs de l'utilisateur à modifier en base
                string[] userFields = UserController.GetUserFields(this.idUser);

                ///si tous les champs ont bien été retournés
                if (userFields.Count() == 5)
                {
                    /// affichage des valeurs dans les champs
                    this.editUserLastName.Text = userFields[0];
                    this.editUserFirstName.Text = userFields[1];
                    this.editUserUsername.Text = userFields[2];

                    /// gestion du type
                    if (userFields[4] == "Utilisateur")
                        this.editUserType.SelectedIndex = 0;
                    else
                        this.editUserType.SelectedIndex = 1;
                }
                else
                    /// redirection s'il y a une erreur au Parse
                    Response.Redirect("~/View/Private/Home.aspx");
            }
        }

        /// <summary>
        /// Méthode déclenchée au clic sur le bouton d'enregistrement
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void B_SaveUser_Click(object sender, EventArgs e)
        {
            string pwd = this.editUserPassword.Text;

            if (string.IsNullOrEmpty(this.editUserPassword.Text))
                pwd = "";

            string ret = UserController.EditUser(this.idUser, this.editUserLastName.Text, this.editUserFirstName.Text, this.editUserUsername.Text, pwd, this.editUserType.SelectedItem.Text);
            if (ret == "No error")
            {
                this.editUserErrorMessage.ForeColor = System.Drawing.Color.DarkGreen;
                this.editUserErrorMessage.Text = "Utilisateur modifié avec succès";
            }
            else
            {
                this.editUserErrorMessage.ForeColor = System.Drawing.Color.DarkRed;
                this.editUserErrorMessage.Text = ret;
            }
        }

        /// <summary>
        /// Méthode déclenchée au clic sur le bouton d'annulation
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void B_Cancel_Click(object sender, EventArgs e)
        {
            /// si c'est un administrateur
            if (((string[])Session["User"])[2] == "Administrateur")
                Response.Redirect("ListUsers.aspx");
            else
                Response.Redirect("~/View/Private/Home.aspx");
        }
    }
}